home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
326-350
/
disk_326
/
cbdump
/
cbdump.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-06
|
3KB
|
115 lines
/***
cbdump.c Written By Stephen Vermeulen (403) 282-7990
PO Box 3295, Station B,
Calgary, ALberta,
CANADA, T2M 4L8.
Permission to use and distribute this code is granted so long
as Commodore's copyright notice stays intact.
This program copys whatever is on the clipboard to the STDOUT
this is useful during debugging clipboard i/o so that one can
immediately examine the results of a clipboard write with a
CLI command like:
cbdump | type opt h
***/
#include "exec/types.h"
#include "exec/ports.h"
#include "exec/io.h"
#include "devices/clipboard.h"
#include <functions.h>
#include <libraries/dosextens.h>
#include <stdio.h>
struct IOClipReq clipboardIO = 0;
struct MsgPort clipboardMsgPort = 0;
struct MsgPort satisfyMsgPort = 0;
main(argc, argv)
int argc;
char *argv[];
{
UBYTE mem[256];
int len;
if (argc == 1)
{
if (!CBOpen(0))
{
clipboardIO.io_Offset = 0;
clipboardIO.io_ClipID = 0;
do
{
len = CBPasteS(mem, 256);
if (len) fwrite(mem, len, 1, stdout);
} while (len) ;
CBClose();
}
}
else
puts("<cbdump> dumps the clipboard to stdout");
}
/*********************************************************************/
/* */
/* Program name: cbio */
/* */
/* Purpose: To provide standard clipboard device interface routines*/
/* such as Open, Post, Read, Write, etc. */
/* (C) 1986 Commodore-Amiga, Inc. */
/* Permission given to use and distribute this code as long as this */
/* notice remains intact. */
/*********************************************************************/
int CBOpen(unit)
int unit;
{
int error;
/* open the clipboard device */
if ((error = OpenDevice("clipboard.device", (long) unit, &clipboardIO, 0L)) != 0)
return(error);
/* Set up the message port in the I/O request */
clipboardMsgPort.mp_Node.ln_Type = NT_MSGPORT;
clipboardMsgPort.mp_Flags = 0;
clipboardMsgPort.mp_SigBit = AllocSignal(-1L);
clipboardMsgPort.mp_SigTask = (struct Task *) FindTask((char *) NULL);
AddPort(&clipboardMsgPort);
clipboardIO.io_Message.mn_ReplyPort = &clipboardMsgPort;
satisfyMsgPort.mp_Node.ln_Type = NT_MSGPORT;
satisfyMsgPort.mp_Flags = 0;
satisfyMsgPort.mp_SigBit = AllocSignal(-1L);
satisfyMsgPort.mp_SigTask = (struct Task *) FindTask((char *) NULL);
AddPort(&satisfyMsgPort);
return(0);
}
CBClose()
{
if (clipboardMsgPort.mp_SigBit > 0)
FreeSignal(clipboardMsgPort.mp_SigBit);
if (satisfyMsgPort.mp_SigBit > 0)
FreeSignal(satisfyMsgPort.mp_SigBit);
RemPort(&satisfyMsgPort);
RemPort(&clipboardMsgPort);
CloseDevice(&clipboardIO);
}
int
CBPasteS(mem, len)
UBYTE *mem;
int len;
{
clipboardIO.io_Command = CMD_READ;
clipboardIO.io_Data = (STRPTR) mem;
clipboardIO.io_Length = len;
DoIO(&clipboardIO);
return((int) clipboardIO.io_Actual);
}